"""
进程之间不能共享全局变量
线程之间可以共享全局变量，能共享全局变量，就会发生并发修改导致数据不一致的情况
    线程安全的三个条件：可见性，书序性，原子性

问题介绍：
 让两个线程各对共享变量 执行100W次 +1 ，检查结果是否是200W
结果：
    运行了很多次，每次的结果都不同，但是都不值200w
原因：就是因为多个线程操作共享变量出现了问题
    比如说第一个线程  拿到了total =0 还没来的及+1 第二个线程也拿到了total=0
        然后第一个线程开始+1 此时total=1， 接第二个线程+1 ，total = 0+1还是1
        就有一次 +1 埋没了

解决方法: 让不让他们同时操作共享变量
    1 线程等待，让线程1执行完之后再执行线程2  thread1.join（）
    2 互斥锁：多个线程只有一个线程可以得到锁，只有得到锁的线程才可以操作共享变量
        这样同一时刻是有一个线程操作共享变量
"""
import threading

# 全局变量
total = 0

def addOne():
    for i in range(100*10000):
        # 注意共享变量total是不可变的，因此使用global修改共享变量的地址
        global  total
        total += 1
    print("执行结果："+str(total))

# 每次运行的结果都不同，但是明显都小于200W
if __name__ == '__main__':
    t1 = threading.Thread(target=addOne)
    t1.start()
    #t1.join() 线程等待，这样t1在操作共享变量的时候线程二就不会去操作共享变量了

    t2 = threading.Thread(target=addOne)
    t2.start()

